﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace questionario
{
    public partial class questionarioControl : UserControl
    {
        /// <summary>
        /// Questionario com lista de questoes
        /// </summary>
        public Questionario qx=new Questionario();
        /// <summary>
        /// String com o nome da prova
        /// </summary>
        private string prova;

        /// <summary>
        /// String contendo o nome da prova
        /// </summary>
        public string Prova
        {
            get { return prova; }
        }

        /// <summary>
        /// Controle de questionario para a camada de apresentação
        /// </summary>
        public questionarioControl()
        {
            InitializeComponent();
        }



        /// <summary>
        /// Carregar determinada prova
        /// </summary>
        internal void CarregarProva(string p)
        {
            CarregarDadosProva(p);
            RecarregarProva();
            
        }

        /// <summary>
        /// Carrega dados da prova
        /// </summary>
        private void CarregarDadosProva(string p)
        {
            this.prova = p;
            this.qx.Carregar(p);

        }

        /// <summary>
        /// Gerar novos controles para determinada prova
        /// </summary>
        private void RecarregarProva()
        {
            this.PainelQuestionarios.Controls.Clear();
            PreencherCabecalho();
            PreencherQuestoes();
            PreencherLog();

            //this.ResumeLayout(false);
            //this.PerformLayout();
            
            
        }

        /// <summary>
        /// Preenche questoes de determinada prova
        /// </summary>
        private void PreencherQuestoes()
        {
            int hPos = 20;
            int contador = 0;
            foreach (Questao q in this.qx.GetQuestoes())
            {
                Control qx=q.GerarControle(contador++,this.qx.ShowRespostas);
                qx.Top = hPos;
                hPos += (qx.Height +4);

                this.PainelQuestionarios.Controls.Add(qx);
            }
        }



        /// <summary>
        /// Preenche o log de tela com recursos de debug interno
        /// </summary>
        private void PreencherLog()
        {
            this.textBox1.Text = qx.Imprimir();
        }

        /// <summary>
        /// Preenche determinado cabeçalho de prova com label
        /// </summary>
        private void PreencherCabecalho()
        {
            this.PainelQuestionarios.Controls.Add(qx.GetIdentificacaoProva());
        }

        /// <summary>
        /// Carrega controle de questionario
        /// </summary>
        private void QuestionarioControl_Load(object sender, EventArgs e)
        {

        }

        /// <summary>
        /// Corrigir prova
        /// </summary>
        private void Corrigir_Click(object sender, EventArgs e)
        {
            qx.SalvarProgressao();

            qx.MostrarCorrecao(true);
            //qx.ResetQuestoes();
            this.RecarregarProva();            
        }
    }
}
